home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 1998
/
MacHack 1998.toast
/
Sessions
/
STL
/
Slides
/
STL8.cp
< prev
next >
Wrap
Text File
|
1998-06-19
|
1KB
|
53 lines
// STL8.cp
#include <iostream>
#include <string>
#include <cstring>
#include <MacTypes.h>
template<class PascalString>
class PStrTemp
{
PascalString s;
void MakePString(const char *cString)
{
std::size_t length= std::strlen(cString);
s[0] = length > (sizeof(s) - 1)? (sizeof(s) - 1): length;
std::strncpy((char *)&s[1], cString, (sizeof(s) - 1));
};
public:
PStrTemp(const char *cString)
{
MakePString(cString);
};
PStrTemp(const std::string& stdString)
{
MakePString(stdString.c_str());
};
operator const unsigned char *() const {return s;};
};
typedef PStrTemp<Str255> ConstStr255;
typedef PStrTemp<Str63> ConstStr63;
typedef PStrTemp<Str32> ConstStr32;
typedef PStrTemp<Str31> ConstStr31;
typedef PStrTemp<Str27> ConstStr27;
typedef PStrTemp<Str15> ConstStr15;
using namespace std;
void PStringFunction(ConstStr255Param stringValue);
void PStringFunction(ConstStr255Param stringValue)
{
string outString((const char *)&stringValue[1], *stringValue);
cout << outString << endl;
}
int main()
{
char *a = "C string";
string b = "std::string";
PStringFunction(ConstStr255(a));
PStringFunction(ConstStr15(b));
}
// C string
// std::string